package 力扣.动态规划;

//给定一个非负整数 n，计算各位数字都不同的数字 x 的个数，其中 0 ≤ x < 10n
public class 计算各个位数不同的数字个数 {
    public static void main(String[] args) {
        int i = countNumbersWithUniqueDigits(2);
        System.out.println(i);
    }
    public static int countNumbersWithUniqueDigits(int n) {
           //是用动态规划求解
          if(n==0)
            return 1;
          //当n等于1时，有10个数
          int abs=10;
          int tem=9;
          int k=9;
           n= (n<=10)?n:10;
          //从n>2开始，第一项9个选择，第二个9项选择，之后依此减少
        for (int i = 2; i <=n; i++) {
              tem*=k;
              k--;
              abs+=tem;
        }
        return abs;
    }
}
